package com.sunspring.zdcall.mapper.master;

import com.sunspring.zdcall.bo.SourceMaxTime;
import com.sunspring.zdcall.entity.ZdQueueInfo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @Author WuLei
 * @Date 2018/11/27  15:31
 */
public interface QueueMapper {

    /**
     * 修改检查状态
     * @param inspectId 检查号
     * @param state 状态id
     */
    int updateCheckStatus(@Param("inspectId") String inspectId, @Param("state") int state);

    /**
     * 批量增加队列信息
     * @param list List<ZdQueueInfo>
     */
    int insertBatchSelective(List<ZdQueueInfo> list);

    /**
     * 完成就诊
     * @param inspectId 检查号
     * @param time 就诊时间
     * @return
     */
    int finish(@Param("inspectId") String inspectId, @Param("time") Date time);

    /**
     * 查询排队表最大的时间(不同数据来源)
     */
    List<SourceMaxTime> findMaxCheckInTime(@Param("from") Date from, @Param("to") Date to);

    /**
     * 查询当天患者
     * @param from 当天开始时间
     * @param to 当天结束时间
     * @return List<ZdQueueInfo>
     */
    List<ZdQueueInfo> selectTodayInfo(@Param("from") Date from, @Param("to") Date to);

    /**
     * 修改队列信息
     * @param queueInfo queueInfo
     * @return 影响记录条数
     */
    int updateById(ZdQueueInfo queueInfo);

    /**
     * 修改打印状态
     * @param inspectId 检查号
     * @param status 打印状态
     * @return 受影响行数
     */
    int updatePrintStatus(@Param("inspectId") String inspectId, @Param("status") int status);

    /**
     * 查询最大队列号
     * @param checkId 检查室Id
     * @return 最大队列号
     */
    String selectMaxQueueId(@Param("checkId") String checkId, @Param("time") Date time);

    /**
     * 新增单条队列信息
     * @param queueInfo 队列信息
     * @return 受影响行数
     */
    int add(ZdQueueInfo queueInfo);
}
